/* 
 * File:   Menu.h
 * Author: agu
 *
 * Created on 26 de mayo de 2014, 01:42
 */

#ifndef MENU_H
#define	MENU_H
#include <SDL2/SDL.h>
#include <SDL2/SDL_mixer.h>
#include <vector>
#include <string>
#include <queue>
#include "Window.h"
#include "Texture.h"
#include "InitializationException.h"
#include "Button.h"
#include "Text.h"
#include "Label.h"
#include "Input.h"
#include "Music.h"
using std::string;
using std::vector;
using std::queue;

class Menu {
public:
    Menu(string name);
    ~Menu();
    void run();
    queue<string> getInstrucciones();
private:
    Window window;
    Texture* wall;
    SDL_Renderer* renderer;
    SDL_Event m_evento;
    bool runnig;
    SDL_Event event;
    vector<Button*> buttons;
    vector<Label*> labels;
    vector<Input*> inputs;
    queue<string> instrucciones;
    Music music;
    void input();
    void handleEvent();
    void update();
    void render();
    //Loads
    void loadGraphics();
    void loadButtons();
    void loadWall();
    void loadAudio();
    void loadLabels();
    //Deletes
    void deleteWall();
    void deleteButtons();
    void deleteLabels();
    void deleteAudio();
    //Updates
    void updateLabels();
    void updateWall();
    void updateButtons();
    void updateAudio();
    //Renders
    void renderWall();
    void renderLabels();
    void renderButtons();

};

#endif	/* MENU_H */

